const EARTH_R = 6371393; // 地球半径

/**
 * 坐标点类
 */
class Point {
    constructor(lng, lat, id) {
        this.id = id // 坐标点id
        this.lng = lng; // 经度
        this.lat = lat; // 纬度
    }

    /**
     * 计算两点距离
     * @param point 另一个点
     * @returns {number} 距离
     */
    distance(point) {
        //转弧度
        let lat1 = this.lat * Math.PI / 180;
        let lng1 = this.lng * Math.PI / 180;
        let lat2 = point.lat * Math.PI / 180;
        let lng2 = point.lng * Math.PI / 180;

        let cos = Math.cos(lat2) * Math.cos(lat1) * Math.cos(lng2 - lng1) + Math.sin(lat1) * Math.sin(lat2);
        return EARTH_R * Math.acos(cos);
    }
}

module.exports = Point;